package javaStudy.线程.生产者消费者案例;

public class Box {
    private int milk;
    //判断奶箱的状态，有奶true，无奶false
    private boolean state=false;
    //put，get方法得加锁，只能同时调用一个方法
    public  synchronized void put(int milk){
        //如果有牛奶，就等待消费
        if(state){
            try {
                wait();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        //如果没有牛奶就添加牛奶
        this.milk=milk;
        System.out.println("送奶工将第"+milk+"瓶奶送入奶箱");
        //生产完毕，修改奶箱状态
        state=true;
        //唤醒其他线程
        notifyAll();
    }
    public synchronized void get(){
        while(true){
            if (!state){
                try {
                    wait();
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
            System.out.println("用户拿到第"+milk+"瓶奶");
            //修改奶箱状态
            state=false;
            //唤醒其他线程
            notifyAll();
        }
    }
}
